<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>实参可以是任何值立即执行函数</title>
</head>
<body>
<script>
    /*`1.实参可以是任何值 也可以是一个函数
     *         mianji()调用函数 相当于使用的函数的返回值
    *           mianji 函数对象 相当于直接使用函数对象
    *   break 退出本次循环
    *   continue跳过本次循环
    *   return可以结束整个函数
    *   return返回值是任意的数据类型 也可以是一个对象
    *2.立即执行函数
    *   用()把匿名函数括起来 来标识是一个整体 不报错
    *   (function () {
     *            alert("我是一个匿名函数");
     *               })();
    *   只会执行一次 不仅会立即执行 还可以传递参数
    *3.对象的方法
    *   对象的属性值可以是任意值 也可以是函数
    *       如果一个函数做为一个对象的属性保存 那么我们称这个函数是对象的方法
    *       调用这个 函数就是调用对象的方法method
    *       只是名称上的区别
    * 4.枚举对象的属性用for..in..
    *   语法:
    *       for(var n in obj){}
    *       for..in..语句 对象中有几个属性，循环体就会执行几次
    *       n就是每次执行时，会将对象中的一个属性的名字赋值给变量
    *
    * */
    var obj={
        name:"孙悟空",
        gender:"男",
        age:20
    };


    function demo() {
        alert("函数开始执行");
        for (var i=0;i<5;i++){
            if (i==2){
               //  break;
               // continue;
                return;
            }
            console.log(i)
        }
        alert("函数执行完了~~")
    }
   demo();


    //立即执行函数 函数名()
    (function () {
        alert("我是一个匿名函数");
    })();

    (function (a,b) {
        console.log("a="+a);
        console.log("b="+b);
    })(456,789);

    //对象的属性值可以是人艺术家类型，也可以是函数
    var obj=new Object();
    obj.name="孙悟空";
    obj.age=30;
    obj.sayName=function(){
        console.log(obj.age);//调log的console对象的方法
        function count() {
            document.write("我累了 需要休息")
        }
        count();//调函数
    };
    obj.sayName();//调sayName的obj方法

    var obj2={
        name:"猪八戒",
        age:60,
        sayName:function () {
            console.log(obj2.name);
        }
    };
    obj2.sayName();
    for (var n in obj2){
        console.log("属性名:"+n);
        console.log("属性值:"+obj2[n]);//返回name age sayName
    }
</script>
</body>
</html>